/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladores;

import entities.Articulos;
import entities.VentasCabecera;
import entities.VentasDetalle;
import entities.VentasDetallePK;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceException;

/**
 *
 * @author edgar
 */
@ManagedBean(name = "ventasController")
@ViewScoped
public class VentasController {

    EntityManager em;
    private VentasCabecera ventasCabecera = new VentasCabecera();
    //private VentasDetalle ventasDetalle;
    private DetalleVenta detalleVenta = new DetalleVenta();
    List<DetalleVenta> listaDetalle = new ArrayList();

    /**
     * @return the detalleVenta
     */
    public DetalleVenta getDetalleVenta() {
        return detalleVenta;
    }

    /**
     * @param detalleVenta the detalleVenta to set
     */
    public void setDetalleVenta(DetalleVenta detalleVenta) {
        this.detalleVenta = detalleVenta;
    }

    public void agregarDetalleVenta() {
        if (this.getListaDetalle().isEmpty()) {
            this.detalleVenta.setNroLinea(1);
        } else {
            this.detalleVenta.setNroLinea(this.getListaDetalle().size() + 1);
        }
        DetalleVenta dv = new DetalleVenta();
        dv.setNroLinea(this.getDetalleVenta().getNroLinea());
        dv.setArticulo(this.getDetalleVenta().getArticulo());
        dv.setCantidad(this.getDetalleVenta().getCantidad());
        dv.setPrecio(this.getDetalleVenta().getPrecio());
        this.getListaDetalle().add(dv);
        this.getDetalleVenta().setNroLinea(this.getDetalleVenta().getNroLinea() + 1);
    }

    public List<VentasDetalle> cargarDetalleVenta(VentasCabecera vc) {
        VentasDetalle vd = null;
        List<VentasDetalle> listaVD = new ArrayList();
        for (int i = 0; i < this.getListaDetalle().size(); i++) {
            VentasDetallePK vdpk = new VentasDetallePK();
            vdpk.setNroFactura(vc.getNroFactura());
            vdpk.setNroLinea(this.getListaDetalle().get(i).getNroLinea());
            vd = new VentasDetalle();
            vd.setVentasDetallePK(vdpk);
            vd.setVentasCabecera(vc);
            vd.setCodArticulo(this.getListaDetalle().get(i).getArticulo());
            vd.setCantidad(this.getListaDetalle().get(i).getCantidad());
            vd.setPrecio(this.getListaDetalle().get(i).getPrecio());
        }
        return listaVD;
    }

    public Boolean insertar() {
        Boolean inserto = false;
        //   VentasCabecera vc = this.ventasCabecera;
        try {
            em.persist(this.ventasCabecera);
            List<VentasDetalle> lista = this.cargarDetalleVenta(ventasCabecera);
            for (int i = 0; i < lista.size(); i++) {
                em.persist(lista.get(i));
            }
            //new EntradaSalidaArticulosController().salidaArticulos();
            //actualizar pagos
            //actualizar cuotas a cobrar
            inserto = true;
        } catch (PersistenceException ex) {
            ex.printStackTrace();
        }

        return inserto;
    }

    /**
     * @return the ventasCabecera
     */
    public VentasCabecera getVentasCabecera() {
        return ventasCabecera;
    }

    /**
     * @param ventasCabecera the ventasCabecera to set
     */
    public void setVentasCabecera(VentasCabecera ventasCabecera) {
        this.ventasCabecera = ventasCabecera;
    }

    /**
     * @return the listaDetalle
     */
    public List<DetalleVenta> getListaDetalle() {
        return listaDetalle;
    }

    /**
     * @param listaDetalle the listaDetalle to set
     */
    public void setListaDetalle(List<DetalleVenta> listaDetalle) {
        this.listaDetalle = listaDetalle;
    }
}
